///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*	Contains axes definition.
*	\file		LaborAxes.h
*	\author		Pierre Terdiman
*	\date		January, 29, 2000
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Include Guard
#ifndef __LABORAXES_H__
#define __LABORAXES_H__
#include "LaborCoreDef.h"
NAMESPACE_LABOR3D_BEGIN

enum ELPointComponent
{
	_X					= 0,
	_Y					= 1,
	_Z					= 2,
	_W					= 3,

	_FORCE_DWORD		= 0x7fffffff
};

enum ELAxisOrder
{
	AXES_XYZ			= (_X)|(_Y<<2)|(_Z<<4),
	AXES_XZY			= (_X)|(_Z<<2)|(_Y<<4),
	AXES_YXZ			= (_Y)|(_X<<2)|(_Z<<4),
	AXES_YZX			= (_Y)|(_Z<<2)|(_X<<4),
	AXES_ZXY			= (_Z)|(_X<<2)|(_Y<<4),
	AXES_ZYX			= (_Z)|(_Y<<2)|(_X<<4),

	AXES_FORCE_DWORD	= 0x7fffffff
};

class  LABORCORE_API CLAxes
{
public:

	inline			CLAxes(ELAxisOrder order)
	{
		mAxis0 = (order   ) & 3;
		mAxis1 = (order>>2) & 3;
		mAxis2 = (order>>4) & 3;
	}
	inline			~CLAxes()		{}

	unsigned int	mAxis0;
	unsigned int	mAxis1;
	unsigned int	mAxis2;
};

NAMESPACE_LABOR3D_END

#endif // __LABORAXES_H__
